共计 165 个字符,预计需要花费 1 分钟才能阅读完成。
提醒:本文最后更新于 2024-08-29 14:29,文中所关联的信息可能已发生改变,请知悉!
这道题比较简单,但我还是从里面学到了一些我不清晰的 C 语言知识
题目信息
ssh 连接
根据题目信息给的连接方式(ssh)连接到目标机器
ssh fd@pwnable.kr -p2222
查看目录文件
不出所料,flag 读取文件的权限果然是没有的
查看 fd.c 文件
分析代码
-
argc
:参数个数 -
argv[]
:参数数组 -
envp[]
:环境参数数组 -
if(argc<2){printf("pass argv[1] a number\n"); return 0; }
只要大于一个参数就可以绕过这个 if 语句
-
atoi
函数:将字符串转化为 int 型 -
read
函数:ssize_t read(int fd, void * buf, size_t count);
fd
为文件指针,但有以下几种特例:fd == 0
:从标准输入读取fd == 1
:从标准输出读取fd == 2
:从标准错误输出读取buf
为读取内容的存放空间count
为读入字节数 -
if(!strcmp("LETMEWIN\n", buf))
:当buf
内容与前者相同时,条件成立
测试
- 使
fd == 0
:即argv[1] == 4660
(0x1234 的 10 进制),让读取内容来源是我们的输入内容 - 输入
LETMEWIN
得到结果
正文完